package com.ppc.utils;

import static org.apache.commons.lang.ArrayUtils.contains;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * 字符串处理工具类
 *
 * @author Jeferry
 * @date 2023/12/20
 */
public class StringUtil {

  /**
   * 对字符串进行排序，再组合返回
   *
   * @param input 输入的字符串
   * @return {@link String} 返回的字符串
   */
  public static String sortAndCombine(String input) {
    // 切分字符串，得到数字数组
    String[] numbers = input.split(",");

    // 将字符串数组转为整数数组
    int[] intNumbers = Arrays.stream(numbers)
        .mapToInt(Integer::parseInt)
        .toArray();

    // 对整数数组进行升序排序
    Arrays.sort(intNumbers);

    // 将排序后的整数数组转为字符串，并用逗号连接起来
    return Arrays.stream(intNumbers)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(","));
  }

  /**
   * 对字符串进行排序，再删除指定数字
   *
   * @param input           输入的字符串
   * @param numbersToRemove 要删除的数字数组
   */
  public static String sortAndRemove(String input, int[] numbersToRemove) {
    // 切分字符串，得到数字数组
    String[] numbers = input.split(",");

    // 将字符串数组转为整数数组
    int[] intNumbers = Arrays.stream(numbers)
        .mapToInt(Integer::parseInt)
        .toArray();

    // 对整数数组进行升序排序
    Arrays.sort(intNumbers);

    // 删除指定的数字
    intNumbers = Arrays.stream(intNumbers)
        .filter(num -> !contains(numbersToRemove, num))
        .toArray();

    // 将排序后的整数数组转为字符串，并用逗号连接起来
    return Arrays.stream(intNumbers)
        .mapToObj(String::valueOf)
        .collect(Collectors.joining(","));
  }
}
